The Spanning Tree network protocol (STP) provides path redundancy while preventing undesirable loops in the network. STP defines a tree that spans all switches in an extended network and places selected redundant paths in a standby or blocked state. Specifically, the STP algorithm ensures that if multiple paths exist to the same destination, then all but one will be blocked.
When using STP to provide for path redundancy and prevent undesirable loops in connection with a core provider network used to provide a plurality of services, not all of which require or involve the participation of all provider edge devices associated with the core network, the spanning tree protocol may yield undesirable results, such as blocking all of the paths that provide connectivity between a subset of provider edge (PE) devices participating in a particular service, e.g., a transparent LAN service (TLS). It is possible to run a separate instance of the STP for each service being provided using the core network, but that approach becomes unmanageable where hundreds or thousands of different services are provided using the same core network. Therefore, an extension to the STP that supports the provision of a large number of services, not each involving the participation of all PE's of a core network, without requiring that a separate instance of the STP be run for each service, is needed.
In addition, each service may be associated with one or more customer networks, each of which may and probably will be running an instance of the STP (or a similar protocol for preventing loops). However, not every implementation of the STP or similar protocol will be the same. Therefore, there is a need for a way for an instance of the STP running on a core provider network to interact with instances of STP (or similar protocols) running on customer networks connected to the provider's core network.